Bundle adjustment is a process of identifying the three-dimensional coordinates of points depicted in a set of images in addition to camera parameters associated with the camera(s) used to capture the set of images. For instance, bundle adjustment can be used to identify and/or refine extrinsic camera parameters, such as position and orientation of the camera used to capture an image (i.e. the pose of the image). Bundle adjustment can also be used to identify and/or refine intrinsic camera parameters, such as principal point, focal length, lens distortion, skewness, etc. The camera parameter information can be used, for instance, in many image visualization and manipulation products. For instance, geographic information systems can use this information to geolocate objects depicted in imagery and to generate, render, and refine three-dimensional models of a geographic area.
The process of bundle adjustment typically seeks consistency in the connectivity among a set of two-dimensional images taken of a scene. The images are captured from camera(s) in poses known to some degree of accuracy. Intrinsic camera parameters can also be known to some degree of accuracy. For instance, each image can have its own pose but all or a part of images from the same camera may share a single set of intrinsic camera parameters. Bundle adjustment uses the fact that the set of images reflect some self-consistent world to improve the precision of the camera poses and intrinsic camera parameters. Bundle adjustment can suffer drawbacks when matched features are unbalanced among the set of images. In addition, the use of an excessive number of matched features for bundle adjustment can significantly increase the computational expense of the bundle adjustment process.